<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>find_caltab [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_calibration.html">Calibration</a> / <a href="toc_calibration_calibrationobject.html">Calibration Object</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">find_caltab</span><span data-if="c" style="display:none;">find_caltab</span><span data-if="cpp" style="display:none;">FindCaltab</span><span data-if="dotnet" style="display:none;">FindCaltab</span><span data-if="python" style="display:none;">find_caltab</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">find_caltab</span><span data-if="c" style="display:none;">find_caltab</span><span data-if="cpp" style="display:none;">FindCaltab</span><span data-if="dotnet" style="display:none;">FindCaltab</span><span data-if="python" style="display:none;">find_caltab</span></code> — Segment the region of a standard calibration plate with rectangularly
arranged marks in the image.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>find_caltab</b>(<a href="#Image"><i>Image</i></a> : <a href="#CalPlate"><i>CalPlate</i></a> : <a href="#CalPlateDescr"><i>CalPlateDescr</i></a>, <a href="#SizeGauss"><i>SizeGauss</i></a>, <a href="#MarkThresh"><i>MarkThresh</i></a>, <a href="#MinDiamMarks"><i>MinDiamMarks</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>find_caltab</b>(const Hobject <a href="#Image"><i>Image</i></a>, Hobject* <a href="#CalPlate"><i>CalPlate</i></a>, const char* <a href="#CalPlateDescr"><i>CalPlateDescr</i></a>, const Hlong <a href="#SizeGauss"><i>SizeGauss</i></a>, const Hlong <a href="#MarkThresh"><i>MarkThresh</i></a>, const Hlong <a href="#MinDiamMarks"><i>MinDiamMarks</i></a>)</code></p>
<p>
<code>Herror <b>T_find_caltab</b>(const Hobject <a href="#Image"><i>Image</i></a>, Hobject* <a href="#CalPlate"><i>CalPlate</i></a>, const Htuple <a href="#CalPlateDescr"><i>CalPlateDescr</i></a>, const Htuple <a href="#SizeGauss"><i>SizeGauss</i></a>, const Htuple <a href="#MarkThresh"><i>MarkThresh</i></a>, const Htuple <a href="#MinDiamMarks"><i>MinDiamMarks</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>FindCaltab</b>(const HObject&amp; <a href="#Image"><i>Image</i></a>, HObject* <a href="#CalPlate"><i>CalPlate</i></a>, const HTuple&amp; <a href="#CalPlateDescr"><i>CalPlateDescr</i></a>, const HTuple&amp; <a href="#SizeGauss"><i>SizeGauss</i></a>, const HTuple&amp; <a href="#MarkThresh"><i>MarkThresh</i></a>, const HTuple&amp; <a href="#MinDiamMarks"><i>MinDiamMarks</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>FindCaltab</b>(const HString&amp; <a href="#CalPlateDescr"><i>CalPlateDescr</i></a>, const HTuple&amp; <a href="#SizeGauss"><i>SizeGauss</i></a>, const HTuple&amp; <a href="#MarkThresh"><i>MarkThresh</i></a>, Hlong <a href="#MinDiamMarks"><i>MinDiamMarks</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>FindCaltab</b>(const HString&amp; <a href="#CalPlateDescr"><i>CalPlateDescr</i></a>, Hlong <a href="#SizeGauss"><i>SizeGauss</i></a>, Hlong <a href="#MarkThresh"><i>MarkThresh</i></a>, Hlong <a href="#MinDiamMarks"><i>MinDiamMarks</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>FindCaltab</b>(const char* <a href="#CalPlateDescr"><i>CalPlateDescr</i></a>, Hlong <a href="#SizeGauss"><i>SizeGauss</i></a>, Hlong <a href="#MarkThresh"><i>MarkThresh</i></a>, Hlong <a href="#MinDiamMarks"><i>MinDiamMarks</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>FindCaltab</b>(const wchar_t* <a href="#CalPlateDescr"><i>CalPlateDescr</i></a>, Hlong <a href="#SizeGauss"><i>SizeGauss</i></a>, Hlong <a href="#MarkThresh"><i>MarkThresh</i></a>, Hlong <a href="#MinDiamMarks"><i>MinDiamMarks</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>FindCaltab</b>(<a href="HObject.html">HObject</a> <a href="#Image"><i>image</i></a>, out <a href="HObject.html">HObject</a> <a href="#CalPlate"><i>calPlate</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CalPlateDescr"><i>calPlateDescr</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SizeGauss"><i>sizeGauss</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MarkThresh"><i>markThresh</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MinDiamMarks"><i>minDiamMarks</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>.<b>FindCaltab</b>(string <a href="#CalPlateDescr"><i>calPlateDescr</i></a>, <a href="HTuple.html">HTuple</a> <a href="#SizeGauss"><i>sizeGauss</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MarkThresh"><i>markThresh</i></a>, int <a href="#MinDiamMarks"><i>minDiamMarks</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>.<b>FindCaltab</b>(string <a href="#CalPlateDescr"><i>calPlateDescr</i></a>, int <a href="#SizeGauss"><i>sizeGauss</i></a>, int <a href="#MarkThresh"><i>markThresh</i></a>, int <a href="#MinDiamMarks"><i>minDiamMarks</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>find_caltab</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#CalPlateDescr"><i>cal_plate_descr</i></a>: str, <a href="#SizeGauss"><i>size_gauss</i></a>: MaybeSequence[Union[int, str]], <a href="#MarkThresh"><i>mark_thresh</i></a>: MaybeSequence[Union[int, float]], <a href="#MinDiamMarks"><i>min_diam_marks</i></a>: int) -&gt; HObject</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></code> is used to determine the region of a plane
calibration plate with circular marks in the input image
<a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a>.  The region must correspond to a standard calibration plate
with rectangularly arranged marks described in the file
<a href="#CalPlateDescr"><i><code><span data-if="hdevelop" style="display:inline">CalPlateDescr</span><span data-if="c" style="display:none">CalPlateDescr</span><span data-if="cpp" style="display:none">CalPlateDescr</span><span data-if="com" style="display:none">CalPlateDescr</span><span data-if="dotnet" style="display:none">calPlateDescr</span><span data-if="python" style="display:none">cal_plate_descr</span></code></i></a>.  The successfully segmented
region is returned in <a href="#CalPlate"><i><code><span data-if="hdevelop" style="display:inline">CalPlate</span><span data-if="c" style="display:none">CalPlate</span><span data-if="cpp" style="display:none">CalPlate</span><span data-if="com" style="display:none">CalPlate</span><span data-if="dotnet" style="display:none">calPlate</span><span data-if="python" style="display:none">cal_plate</span></code></i></a>. 该算子 provides two algorithms.
By setting appropriate integer values in <a href="#SizeGauss"><i><code><span data-if="hdevelop" style="display:inline">SizeGauss</span><span data-if="c" style="display:none">SizeGauss</span><span data-if="cpp" style="display:none">SizeGauss</span><span data-if="com" style="display:none">SizeGauss</span><span data-if="dotnet" style="display:none">sizeGauss</span><span data-if="python" style="display:none">size_gauss</span></code></i></a>,
<a href="#MarkThresh"><i><code><span data-if="hdevelop" style="display:inline">MarkThresh</span><span data-if="c" style="display:none">MarkThresh</span><span data-if="cpp" style="display:none">MarkThresh</span><span data-if="com" style="display:none">MarkThresh</span><span data-if="dotnet" style="display:none">markThresh</span><span data-if="python" style="display:none">mark_thresh</span></code></i></a>, and <a href="#MinDiamMarks"><i><code><span data-if="hdevelop" style="display:inline">MinDiamMarks</span><span data-if="c" style="display:none">MinDiamMarks</span><span data-if="cpp" style="display:none">MinDiamMarks</span><span data-if="com" style="display:none">MinDiamMarks</span><span data-if="dotnet" style="display:none">minDiamMarks</span><span data-if="python" style="display:none">min_diam_marks</span></code></i></a>, respectively, you invoke
the <i>standard algorithm</i>.  If you pass a tuple of parameter names in
<a href="#SizeGauss"><i><code><span data-if="hdevelop" style="display:inline">SizeGauss</span><span data-if="c" style="display:none">SizeGauss</span><span data-if="cpp" style="display:none">SizeGauss</span><span data-if="com" style="display:none">SizeGauss</span><span data-if="dotnet" style="display:none">sizeGauss</span><span data-if="python" style="display:none">size_gauss</span></code></i></a> and a corresponding tuple of parameter values in
<a href="#MarkThresh"><i><code><span data-if="hdevelop" style="display:inline">MarkThresh</span><span data-if="c" style="display:none">MarkThresh</span><span data-if="cpp" style="display:none">MarkThresh</span><span data-if="com" style="display:none">MarkThresh</span><span data-if="dotnet" style="display:none">markThresh</span><span data-if="python" style="display:none">mark_thresh</span></code></i></a>, or just two empty tuples, respectively, you invoke the
<i>advanced algorithm</i> instead. In this case the value passed in
<a href="#MinDiamMarks"><i><code><span data-if="hdevelop" style="display:inline">MinDiamMarks</span><span data-if="c" style="display:none">MinDiamMarks</span><span data-if="cpp" style="display:none">MinDiamMarks</span><span data-if="com" style="display:none">MinDiamMarks</span><span data-if="dotnet" style="display:none">minDiamMarks</span><span data-if="python" style="display:none">min_diam_marks</span></code></i></a> is ignored.
</p>
<h3>Standard algorithm</h3>
<p>
First, the input image is smoothed (see <a href="gauss_image.html"><code><span data-if="hdevelop" style="display:inline">gauss_image</span><span data-if="c" style="display:none">gauss_image</span><span data-if="cpp" style="display:none">GaussImage</span><span data-if="com" style="display:none">GaussImage</span><span data-if="dotnet" style="display:none">GaussImage</span><span data-if="python" style="display:none">gauss_image</span></code></a>); the size of
the used filter mask is given by <a href="#SizeGauss"><i><code><span data-if="hdevelop" style="display:inline">SizeGauss</span><span data-if="c" style="display:none">SizeGauss</span><span data-if="cpp" style="display:none">SizeGauss</span><span data-if="com" style="display:none">SizeGauss</span><span data-if="dotnet" style="display:none">sizeGauss</span><span data-if="python" style="display:none">size_gauss</span></code></i></a>.  Afterwards, a
threshold operator (see <a href="threshold.html"><code><span data-if="hdevelop" style="display:inline">threshold</span><span data-if="c" style="display:none">threshold</span><span data-if="cpp" style="display:none">Threshold</span><span data-if="com" style="display:none">Threshold</span><span data-if="dotnet" style="display:none">Threshold</span><span data-if="python" style="display:none">threshold</span></code></a>) with a minimum gray value
<a href="#MarkThresh"><i><code><span data-if="hdevelop" style="display:inline">MarkThresh</span><span data-if="c" style="display:none">MarkThresh</span><span data-if="cpp" style="display:none">MarkThresh</span><span data-if="com" style="display:none">MarkThresh</span><span data-if="dotnet" style="display:none">markThresh</span><span data-if="python" style="display:none">mark_thresh</span></code></i></a> is applied.  Among the extracted connected regions
the most convex region with an almost correct number of holes (corresponding
to the dark marks of the calibration plate) is selected. Holes with a
diameter smaller than the expected size of the marks
<a href="#MinDiamMarks"><i><code><span data-if="hdevelop" style="display:inline">MinDiamMarks</span><span data-if="c" style="display:none">MinDiamMarks</span><span data-if="cpp" style="display:none">MinDiamMarks</span><span data-if="com" style="display:none">MinDiamMarks</span><span data-if="dotnet" style="display:none">minDiamMarks</span><span data-if="python" style="display:none">min_diam_marks</span></code></i></a> are eliminated to reduce the impact of noise.
The number of marks is read from the calibration plate description
file <a href="#CalPlateDescr"><i><code><span data-if="hdevelop" style="display:inline">CalPlateDescr</span><span data-if="c" style="display:none">CalPlateDescr</span><span data-if="cpp" style="display:none">CalPlateDescr</span><span data-if="com" style="display:none">CalPlateDescr</span><span data-if="dotnet" style="display:none">calPlateDescr</span><span data-if="python" style="display:none">cal_plate_descr</span></code></i></a>. The complete explanation of this file
can be found within the description of <a href="gen_caltab.html"><code><span data-if="hdevelop" style="display:inline">gen_caltab</span><span data-if="c" style="display:none">gen_caltab</span><span data-if="cpp" style="display:none">GenCaltab</span><span data-if="com" style="display:none">GenCaltab</span><span data-if="dotnet" style="display:none">GenCaltab</span><span data-if="python" style="display:none">gen_caltab</span></code></a>.
</p>
<h3>Advanced algorithm</h3>
<p>
First, an image pyramid based on <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> is built.  Starting from the
highest pyramid level, round regions are segmented with a dynamic threshold.
Then, they are associated in groups based on their mutual proximity and
it is evaluated whether they can represent marks of a potential
calibration plate.  The search is terminated once the expected number of
marks has been identified in one group.  The surrounding lighter area
is returned in <a href="#CalPlate"><i><code><span data-if="hdevelop" style="display:inline">CalPlate</span><span data-if="c" style="display:none">CalPlate</span><span data-if="cpp" style="display:none">CalPlate</span><span data-if="com" style="display:none">CalPlate</span><span data-if="dotnet" style="display:none">calPlate</span><span data-if="python" style="display:none">cal_plate</span></code></i></a>.
</p>
<p>The image pyramid makes the search independent from the size of the image
and the marks.  The dynamic threshold makes the algorithm immune to bad or
irregular illumination.  Therefore, in general, no parameter is required.
Yet, you can adjust some auxiliary parameters of the advanced algorithm
by passing a list of parameter names (strings) to <a href="#SizeGauss"><i><code><span data-if="hdevelop" style="display:inline">SizeGauss</span><span data-if="c" style="display:none">SizeGauss</span><span data-if="cpp" style="display:none">SizeGauss</span><span data-if="com" style="display:none">SizeGauss</span><span data-if="dotnet" style="display:none">sizeGauss</span><span data-if="python" style="display:none">size_gauss</span></code></i></a> and
a list of corresponding  parameter values to <a href="#MarkThresh"><i><code><span data-if="hdevelop" style="display:inline">MarkThresh</span><span data-if="c" style="display:none">MarkThresh</span><span data-if="cpp" style="display:none">MarkThresh</span><span data-if="com" style="display:none">MarkThresh</span><span data-if="dotnet" style="display:none">markThresh</span><span data-if="python" style="display:none">mark_thresh</span></code></i></a>. Currently
the following parameter is supported:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'gap_tolerance'</span><span data-if="c" style="display:none">"gap_tolerance"</span><span data-if="cpp" style="display:none">"gap_tolerance"</span><span data-if="com" style="display:none">"gap_tolerance"</span><span data-if="dotnet" style="display:none">"gap_tolerance"</span><span data-if="python" style="display:none">"gap_tolerance"</span></i>:</b></dt>
<dd>
<p>

Tolerance factor for gaps between the marks. If the marks appear
closer to each other than expected, you might set
<i><span data-if="hdevelop" style="display:inline">'gap_tolerance'</span><span data-if="c" style="display:none">"gap_tolerance"</span><span data-if="cpp" style="display:none">"gap_tolerance"</span><span data-if="com" style="display:none">"gap_tolerance"</span><span data-if="dotnet" style="display:none">"gap_tolerance"</span><span data-if="python" style="display:none">"gap_tolerance"</span></i> &lt; <i>1.0</i> to avoid disturbing patterns
outside the calibration plate to be associated with the calibration
plate. This can typically happen if the plate is strongly tilted and
positioned in front of a background that exposes mark-like patterns.
If the distances between single marks deviate significantly, e.g., if
the calibration plate appears with strong perspective distortion in the
image, you might set <i><span data-if="hdevelop" style="display:inline">'gap_tolerance'</span><span data-if="c" style="display:none">"gap_tolerance"</span><span data-if="cpp" style="display:none">"gap_tolerance"</span><span data-if="com" style="display:none">"gap_tolerance"</span><span data-if="dotnet" style="display:none">"gap_tolerance"</span><span data-if="python" style="display:none">"gap_tolerance"</span></i> &gt; <i>1.0</i> to enforce
the grouping for the more distant marks.</p>
<p>
<i>Suggested values:</i> <i>0.75</i>, <i>0.9</i>, <i>1.0</i>
<i>1.1</i>, <i>1.2</i>, <i>1.5</i></p>
<p>
<i>Default:</i> <i>1.0</i>
</p>
</dd>
</dl>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>在元组级别自动并行化。</li>
  
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Image" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></b> (input_object)  </span><span>singlechannelimage(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / uint2)</span>
</div>
<p class="pardesc">Input image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CalPlate" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CalPlate</span><span data-if="c" style="display:none">CalPlate</span><span data-if="cpp" style="display:none">CalPlate</span><span data-if="com" style="display:none">CalPlate</span><span data-if="dotnet" style="display:none">calPlate</span><span data-if="python" style="display:none">cal_plate</span></code></b> (output_object)  </span><span>region <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HRegion.html">HRegion</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HRegion.html">HRegion</a></span><span data-if="c" style="display:none">Hobject *</span></span>
</div>
<p class="pardesc">Output region.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CalPlateDescr" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CalPlateDescr</span><span data-if="c" style="display:none">CalPlateDescr</span><span data-if="cpp" style="display:none">CalPlateDescr</span><span data-if="com" style="display:none">CalPlateDescr</span><span data-if="dotnet" style="display:none">calPlateDescr</span><span data-if="python" style="display:none">cal_plate_descr</span></code></b> (input_control)  </span><span>filename.read <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">File name of the calibration plate description.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'caltab_100.descr'</span>
    <span data-if="c" style="display:none">"caltab_100.descr"</span>
    <span data-if="cpp" style="display:none">"caltab_100.descr"</span>
    <span data-if="com" style="display:none">"caltab_100.descr"</span>
    <span data-if="dotnet" style="display:none">"caltab_100.descr"</span>
    <span data-if="python" style="display:none">"caltab_100.descr"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'caltab_100mm.descr'</span><span data-if="c" style="display:none">"caltab_100mm.descr"</span><span data-if="cpp" style="display:none">"caltab_100mm.descr"</span><span data-if="com" style="display:none">"caltab_100mm.descr"</span><span data-if="dotnet" style="display:none">"caltab_100mm.descr"</span><span data-if="python" style="display:none">"caltab_100mm.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_10mm.descr'</span><span data-if="c" style="display:none">"caltab_10mm.descr"</span><span data-if="cpp" style="display:none">"caltab_10mm.descr"</span><span data-if="com" style="display:none">"caltab_10mm.descr"</span><span data-if="dotnet" style="display:none">"caltab_10mm.descr"</span><span data-if="python" style="display:none">"caltab_10mm.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_200mm.descr'</span><span data-if="c" style="display:none">"caltab_200mm.descr"</span><span data-if="cpp" style="display:none">"caltab_200mm.descr"</span><span data-if="com" style="display:none">"caltab_200mm.descr"</span><span data-if="dotnet" style="display:none">"caltab_200mm.descr"</span><span data-if="python" style="display:none">"caltab_200mm.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_2500um.descr'</span><span data-if="c" style="display:none">"caltab_2500um.descr"</span><span data-if="cpp" style="display:none">"caltab_2500um.descr"</span><span data-if="com" style="display:none">"caltab_2500um.descr"</span><span data-if="dotnet" style="display:none">"caltab_2500um.descr"</span><span data-if="python" style="display:none">"caltab_2500um.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_30mm.descr'</span><span data-if="c" style="display:none">"caltab_30mm.descr"</span><span data-if="cpp" style="display:none">"caltab_30mm.descr"</span><span data-if="com" style="display:none">"caltab_30mm.descr"</span><span data-if="dotnet" style="display:none">"caltab_30mm.descr"</span><span data-if="python" style="display:none">"caltab_30mm.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_650um.descr'</span><span data-if="c" style="display:none">"caltab_650um.descr"</span><span data-if="cpp" style="display:none">"caltab_650um.descr"</span><span data-if="com" style="display:none">"caltab_650um.descr"</span><span data-if="dotnet" style="display:none">"caltab_650um.descr"</span><span data-if="python" style="display:none">"caltab_650um.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_6mm.descr'</span><span data-if="c" style="display:none">"caltab_6mm.descr"</span><span data-if="cpp" style="display:none">"caltab_6mm.descr"</span><span data-if="com" style="display:none">"caltab_6mm.descr"</span><span data-if="dotnet" style="display:none">"caltab_6mm.descr"</span><span data-if="python" style="display:none">"caltab_6mm.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_800mm.descr'</span><span data-if="c" style="display:none">"caltab_800mm.descr"</span><span data-if="cpp" style="display:none">"caltab_800mm.descr"</span><span data-if="com" style="display:none">"caltab_800mm.descr"</span><span data-if="dotnet" style="display:none">"caltab_800mm.descr"</span><span data-if="python" style="display:none">"caltab_800mm.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_big.descr'</span><span data-if="c" style="display:none">"caltab_big.descr"</span><span data-if="cpp" style="display:none">"caltab_big.descr"</span><span data-if="com" style="display:none">"caltab_big.descr"</span><span data-if="dotnet" style="display:none">"caltab_big.descr"</span><span data-if="python" style="display:none">"caltab_big.descr"</span>, <span data-if="hdevelop" style="display:inline">'caltab_small.descr'</span><span data-if="c" style="display:none">"caltab_small.descr"</span><span data-if="cpp" style="display:none">"caltab_small.descr"</span><span data-if="com" style="display:none">"caltab_small.descr"</span><span data-if="dotnet" style="display:none">"caltab_small.descr"</span><span data-if="python" style="display:none">"caltab_small.descr"</span></p>
<p class="pardesc"><span class="parcat">File extension:
          </span>.<code>descr</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="SizeGauss" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SizeGauss</span><span data-if="c" style="display:none">SizeGauss</span><span data-if="cpp" style="display:none">SizeGauss</span><span data-if="com" style="display:none">SizeGauss</span><span data-if="dotnet" style="display:none">sizeGauss</span><span data-if="python" style="display:none">size_gauss</span></code></b> (input_control)  </span><span>integer(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[int, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i> / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>Hlong</i> / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Filter size of the Gaussian.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>3</p>
<p class="pardesc"><span class="parcat">List of values:
      </span>0, 3, 5, 7, 9, 11, <span data-if="hdevelop" style="display:inline">'gap_tolerance'</span><span data-if="c" style="display:none">"gap_tolerance"</span><span data-if="cpp" style="display:none">"gap_tolerance"</span><span data-if="com" style="display:none">"gap_tolerance"</span><span data-if="dotnet" style="display:none">"gap_tolerance"</span><span data-if="python" style="display:none">"gap_tolerance"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="MarkThresh" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MarkThresh</span><span data-if="c" style="display:none">MarkThresh</span><span data-if="cpp" style="display:none">MarkThresh</span><span data-if="com" style="display:none">MarkThresh</span><span data-if="dotnet" style="display:none">markThresh</span><span data-if="python" style="display:none">mark_thresh</span></code></b> (input_control)  </span><span>integer(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[int, float]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer / </span><span data-if="hdevelop" style="display:inline">real)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">double)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i> / </span><span data-if="cpp" style="display:none">double)</span><span data-if="c" style="display:none"> (<i>Hlong</i> / </span><span data-if="c" style="display:none">double)</span></span>
</div>
<p class="pardesc">Threshold value for mark extraction.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>112</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>48, 64, 80, 96, 112, 128, 144, 160, 0.5, 0.9, 1.0, 1.1, 1.5</p>
</div>
  <div class="par">
<div class="parhead">
<span id="MinDiamMarks" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MinDiamMarks</span><span data-if="c" style="display:none">MinDiamMarks</span><span data-if="cpp" style="display:none">MinDiamMarks</span><span data-if="com" style="display:none">MinDiamMarks</span><span data-if="dotnet" style="display:none">minDiamMarks</span><span data-if="python" style="display:none">min_diam_marks</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Expected minimal diameter of the marks on the calibration
plate.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>5</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>3, 5, 9, 15, 30, 50, 70</p>
</div>
<div data-if="hdevelop" style="display:inline">
<h2 id="sec_example_hdevelop">例程 (HDevelop)</h2>
<pre class="example">
* Read calibration image.
read_image(Image, 'calib/calib_distorted_01')
* Find calibration pattern.
find_caltab(Image, CalPlate, 'caltab_100mm.descr', 3, 112, 5)
</pre>
</div>
<div data-if="c" style="display:none">
<h2 id="sec_example_c">例程 (HDevelop)</h2>
<pre class="example">
* Read calibration image.
read_image(Image, 'calib/calib_distorted_01')
* Find calibration pattern.
find_caltab(Image, CalPlate, 'caltab_100mm.descr', 3, 112, 5)
</pre>
</div>
<div data-if="cpp" style="display:none">
<h2 id="sec_example_cpp">例程 (HDevelop)</h2>
<pre class="example">
* Read calibration image.
read_image(Image, 'calib/calib_distorted_01')
* Find calibration pattern.
find_caltab(Image, CalPlate, 'caltab_100mm.descr', 3, 112, 5)
</pre>
</div>
<div data-if="com" style="display:none">
<h2 id="sec_example_com">例程 (HDevelop)</h2>
<pre class="example">
* Read calibration image.
read_image(Image, 'calib/calib_distorted_01')
* Find calibration pattern.
find_caltab(Image, CalPlate, 'caltab_100mm.descr', 3, 112, 5)
</pre>
</div>
<div data-if="dotnet" style="display:none">
<h2 id="sec_example_dotnet">例程 (HDevelop)</h2>
<pre class="example">
* Read calibration image.
read_image(Image, 'calib/calib_distorted_01')
* Find calibration pattern.
find_caltab(Image, CalPlate, 'caltab_100mm.descr', 3, 112, 5)
</pre>
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameter values are
correct and an image region is found. The behavior in case
of empty input (no image given) can be set via
<a href="set_system.html"><code><span data-if="hdevelop" style="display:inline">set_system(::'no_object_result',&lt;Result&gt;:)</span><span data-if="c" style="display:none">set_system("no_object_result",&lt;Result&gt;)</span><span data-if="cpp" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="com" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="dotnet" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="python" style="display:none">set_system("no_object_result",&lt;Result&gt;)</span></code></a>
and the behavior in case of an empty result region via
<a href="set_system.html"><code><span data-if="hdevelop" style="display:inline">set_system(::'store_empty_region',&lt;'true'/'false'&gt;:)</span><span data-if="c" style="display:none">set_system("store_empty_region",&lt;"true"/"false"&gt;)</span><span data-if="cpp" style="display:none">SetSystem("store_empty_region",&lt;"true"/"false"&gt;)</span><span data-if="com" style="display:none">SetSystem("store_empty_region",&lt;"true"/"false"&gt;)</span><span data-if="dotnet" style="display:none">SetSystem("store_empty_region",&lt;"true"/"false"&gt;)</span><span data-if="python" style="display:none">set_system("store_empty_region",&lt;"true"/"false"&gt;)</span></code></a>.
如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_image.html"><span data-if="hdevelop" style="display:inline">read_image</span><span data-if="c" style="display:none">read_image</span><span data-if="cpp" style="display:none">ReadImage</span><span data-if="com" style="display:none">ReadImage</span><span data-if="dotnet" style="display:none">ReadImage</span><span data-if="python" style="display:none">read_image</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="find_marks_and_pose.html"><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="find_marks_and_pose.html"><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></a></code>, 
<code><a href="camera_calibration.html"><span data-if="hdevelop" style="display:inline">camera_calibration</span><span data-if="c" style="display:none">camera_calibration</span><span data-if="cpp" style="display:none">CameraCalibration</span><span data-if="com" style="display:none">CameraCalibration</span><span data-if="dotnet" style="display:none">CameraCalibration</span><span data-if="python" style="display:none">camera_calibration</span></a></code>, 
<code><a href="disp_caltab.html"><span data-if="hdevelop" style="display:inline">disp_caltab</span><span data-if="c" style="display:none">disp_caltab</span><span data-if="cpp" style="display:none">DispCaltab</span><span data-if="com" style="display:none">DispCaltab</span><span data-if="dotnet" style="display:none">DispCaltab</span><span data-if="python" style="display:none">disp_caltab</span></a></code>, 
<code><a href="sim_caltab.html"><span data-if="hdevelop" style="display:inline">sim_caltab</span><span data-if="c" style="display:none">sim_caltab</span><span data-if="cpp" style="display:none">SimCaltab</span><span data-if="com" style="display:none">SimCaltab</span><span data-if="dotnet" style="display:none">SimCaltab</span><span data-if="python" style="display:none">sim_caltab</span></a></code>, 
<code><a href="caltab_points.html"><span data-if="hdevelop" style="display:inline">caltab_points</span><span data-if="c" style="display:none">caltab_points</span><span data-if="cpp" style="display:none">CaltabPoints</span><span data-if="com" style="display:none">CaltabPoints</span><span data-if="dotnet" style="display:none">CaltabPoints</span><span data-if="python" style="display:none">caltab_points</span></a></code>, 
<code><a href="gen_caltab.html"><span data-if="hdevelop" style="display:inline">gen_caltab</span><span data-if="c" style="display:none">gen_caltab</span><span data-if="cpp" style="display:none">GenCaltab</span><span data-if="com" style="display:none">GenCaltab</span><span data-if="dotnet" style="display:none">GenCaltab</span><span data-if="python" style="display:none">gen_caltab</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
